package com.unidt.www.module.expert.service;

import com.unidt.www.module.expert.form.*;
import com.unidt.www.module.expert.vo.ExpertInfoUserDataVo;
import com.unidt.www.module.expert.vo.ExpertListVo;

/**
 * @Author sk
 * @Description:
 * @Date 2022/12/15 16:36
 **/
public interface InvitationDataService {

    /**
     * 功能描述: 随机邀约查询
     * @author sk
     * @date 2022/12/19
     * @param loadForm
     * @return com.unidt.www.module.expert.vo.ExpertInfoUserDataVo
     */

    ExpertInfoUserDataVo load(InvitationRuleLoadForm loadForm);

    /**
     * 功能描述: 定向邀约查询
     * @author sk
     * @date 2022/12/19
     * @param loadForm
     * @return com.unidt.www.module.expert.vo.ExpertInfoUserDataVo
     */

    ExpertInfoUserDataVo directionalLoad(DirectionalRuleForm loadForm);

    /**
     * 功能描述: 查询邀约专家
     * @author sk
     * @date 2022/12/19
     * @param key
     * @return java.util.List<com.unidt.www.module.expert.vo.ExpertRuleUserVo>
     */

    ExpertListVo loadByKey(String key);

    /**
     * 功能描述: 定向邀约专家名单选择确认
     * @author sk
     * @date 2022/12/19
     * @param expertInfoUserDataForm
     * @return java.lang.Boolean
     */

    Boolean saveExperts(ExpertInfoUserDataForm expertInfoUserDataForm);

    /**
     * 功能描述: 删除邀约专家名单
     * @author sk
     * @date 2022/12/19
     * @param loadKey
     * @param expertId
     * @return java.lang.Boolean
     */

    Boolean deleteExpert(String loadKey, Long expertId);

    /**
     * 功能描述: 保存专家
     * @author sk
     * @date 2022/12/19
     * @param invitationForm
     * @return java.lang.Boolean
     */

    Boolean save(ExpertInvitationForm invitationForm);

    /**
     * 功能描述: 名单取消
     * @author sk
     * @date 2022/12/20
     * @param expertCancelForm
     * @return java.lang.Boolean
     */
    Boolean cancel(ExpertCancelForm expertCancelForm);

    /**
     * 功能描述: 名单确认
     * @author sk
     * @date 2022/12/23
     * @param id
     * @return java.lang.Boolean
     */
    
    Boolean confirm(Long id);

    /**
     * 功能描述: 开启
     * @author sk
     * @date 2022/12/23
     * @param id
     * @return java.lang.Boolean
     */

    Boolean start(Long id);

    /**
     * 功能描述: 删除
     * @author sk
     * @date 2022/12/26
     * @param id
     * @return java.lang.Boolean
     */

    Boolean delete(Long id);
}
